Перейти к основному содержимому

Арифметические операции

Основные арифметические операторы

Язык Си предоставляет стандартный набор операторов для математических вычислений.

ОператорОперацияПримерРезультат
+Сложение5 + 38
-Вычитание10 - 46
*Умножение7 * 214
/Деление15 / 35
%Остаток от деления17 % 52

Простые примеры

#include <stdio.h>

int main() {
int a = 10;
int b = 3;

printf("a + b = %d\n", a + b); // 13
printf("a - b = %d\n", a - b); // 7
printf("a * b = %d\n", a * b); // 30
printf("a / b = %d\n", a / b); // 3
printf("a %% b = %d\n", a % b); // 1

return 0;
}

Особенности операций

Целочисленное деление

int result1 = 7 / 2;     // 3 (дробная часть отбрасывается)
int result2 = 10 / 3; // 3
int result3 = 5 / 10; // 0

printf("7 / 2 = %d\n", result1);
printf("10 / 3 = %d\n", result2);
printf("5 / 10 = %d\n", result3);

Операция остатка (%)

int hours = 25;
int days = hours / 24; // 1 день
int remaining = hours % 24; // 1 час остаток

printf("%d часов = %d дней и %d часов\n", hours, days, remaining);
// 25 часов = 1 дней и 1 часов
Важно знать

Операция % работает только с целыми числами. Для дробных чисел используйте функцию fmod().

Приоритет операций

Операции выполняются в определенном порядке:

  1. Скобки ()
  2. Умножение, деление, остаток * / %
  3. Сложение, вычитание + -
int result1 = 2 + 3 * 4;      // 14 (не 20!)
int result2 = (2 + 3) * 4; // 20
int result3 = 10 - 6 / 2; // 7 (не 2!)

printf("2 + 3 * 4 = %d\n", result1);
printf("(2 + 3) * 4 = %d\n", result2);
printf("10 - 6 / 2 = %d\n", result3);

Сокращенные операторы присваивания

Базовые сокращения

int number = 10;

number += 5; // number = number + 5; (15)
number -= 3; // number = number - 3; (12)
number *= 2; // number = number * 2; (24)
number /= 4; // number = number / 4; (6)
number %= 5; // number = number % 5; (1)

printf("Итоговое значение: %d\n", number);

Операторы инкремента и декремента

Увеличение и уменьшение на 1

int counter = 5;

printf("Исходное значение: %d\n", counter);

counter++; // Увеличить на 1 (постфиксная форма)
printf("После counter++: %d\n", counter);

++counter; // Увеличить на 1 (префиксная форма)
printf("После ++counter: %d\n", counter);

counter--; // Уменьшить на 1
printf("После counter--: %d\n", counter);

Различие между префиксной и постфиксной формами

int a = 5;
int result = a++; // Сначала используем a, потом увеличиваем

printf("a = %d, result = %d\n", a, result); // a = 6, result = 5

Смешанные вычисления

Операции с разными типами

int whole = 5;
float decimal = 2.3;
float result = whole + decimal; // int автоматически преобразуется в float

printf("5 + 2.3 = %.1f\n", result); // 7.3

Явное преобразование типов

int numerator = 7;
int denominator = 2;

// Целочисленное деление
int intResult = numerator / denominator; // 3

// Дробное деление
float floatResult = (float)numerator / denominator; // 3.5

printf("Целочисленное: %d\n", intResult);
printf("Дробное: %.1f\n", floatResult);

Математические вычисления

Простой калькулятор

#include <stdio.h>

int main() {
float num1 = 15.5;
float num2 = 4.2;

printf("=== КАЛЬКУЛЯТОР ===\n");
printf("Первое число: %.1f\n", num1);
printf("Второе число: %.1f\n", num2);
printf("------------------\n");
printf("Сумма: %.2f\n", num1 + num2);
printf("Разность: %.2f\n", num1 - num2);
printf("Произведение: %.2f\n", num1 * num2);
printf("Частное: %.2f\n", num1 / num2);

return 0;
}

Вычисление площади и периметра

#include <stdio.h>

#define PI 3.14159

int main() {
float radius = 7.5;

float area = PI * radius * radius;
float circumference = 2 * PI * radius;

printf("=== КРУГ ===\n");
printf("Радиус: %.1f см\n", radius);
printf("Площадь: %.2f см²\n", area);
printf("Длина окружности: %.2f см\n", circumference);

return 0;
}

Частые ошибки

Типичные проблемы
// ❌ Деление на ноль
int result = 10 / 0; // Ошибка выполнения!

// ❌ Потеря точности при делении
int a = 7, b = 2;
float wrong = a / b; // 3.000000 (целочисленное деление)
float correct = (float)a / b; // 3.500000

// ❌ Переполнение
int big = 2000000000;
int overflow = big + big; // Переполнение!
Полезные советы
  • Используйте скобки для ясности: (a + b) * c
  • При делении целых чисел помните о потере дробной части
  • Проверяйте деление на ноль в важных вычислениях
  • Используйте подходящий тип данных для результата

Практическое задание

Создайте программу для расчета стоимости покупки:

#include <stdio.h>

#define TAX_RATE 0.20 // НДС 20%

int main() {
float price = 1500.0; // Цена товара
int quantity = 3; // Количество

float subtotal = price * quantity;
float tax = subtotal * TAX_RATE;
float total = subtotal + tax;

printf("=== РАСЧЕТ ПОКУПКИ ===\n");
printf("Цена за единицу: %.2f руб.\n", price);
printf("Количество: %d шт.\n", quantity);
printf("Сумма без налога: %.2f руб.\n", subtotal);
printf("НДС (%.0f%%): %.2f руб.\n", TAX_RATE * 100, tax);
printf("Итого к оплате: %.2f руб.\n", total);

return 0;
}

Арифметические операции — основа всех вычислений в программах на языке Си.